#ifndef ANT_WORLD_H
#define ANT_WORLD_H

#include "Vec3.h"
#include <vector>
#include "Singleton.h"
#include "AiAgentGroup.h"

class Ant;
class FoodSource;
class GroundPlane;
class AntHill;
class Predator;
class ControllablePredator;

class AntWorld
{
public:
	
	void Update();
	FoodSource* FoodInRange(Vec3f pos, float range);
	void CreateNewFood();
	void ClearFood(int id);

	AntHill* GetAntHill();
	Predator* GetRandPredator();
	ControllablePredator* GetControlledPredator();

private:
	AntWorld();
	friend class Singleton<AntWorld>;

	int m_currentIDCount;
	int m_numAnts;
	GroundPlane* m_pGround;
	AntHill* m_pAntHill;
	Predator* m_pPredator;
	ControllablePredator* m_pControlledPredator;

	AIAgentGroup m_agentGroup;
	std::vector<Ant*> m_ants;
	std::vector<FoodSource*> m_food;
};

typedef Singleton<AntWorld> TheAntWorld;

#endif